This invention relates to printer driver architectures and to methods of providing adaptable printer driver architectures.
Print drivers are generally known and enable a processor, such as a personal computer, to configure an output data stream that will be recognized and acted upon by a connected printer. The output data stream implements necessary hand-shaking actions required to enable interaction between the processor and the connected printer. Processors such as personal computers require an operating system such as Windows 3.1, Windows 95, Windows NT or DOS (Disk Operating System) in order to operate correctly. Because of various differences between these different types of operating systems, printer drivers which are configured for use with one operating system often cannot be used with another operating system. In addition, various other differences in a printer""s operating environment can cause printer drivers to not be xe2x80x9ctransparentxe2x80x9d. In other words, a completely different printer driver can be, and often is required. Some of the differences in a printer""s operating environment include differences in Page Description Languages (i.e. the specific languages used to describe a particular collection of data which is to be printed and which is understood by a printer), printer models, and User Interfaces (UI), to name just a few.
In the past, solutions to the various problems foisted upon printer drivers, e.g. operating environment differences, have involved using different software code bases for printer drivers for the different operating systems, Page Description Languages, and the like. These solutions have been largely monolithic implementations with little or no substitutability of shared implementations. Resultingly, printer drivers have been hard to maintain and hard to migrate to other different operating systems and/or printer platforms. Additionally, the different solutions have resulted in a different look and feel to the driver UI, as well as differing driver behaviors depending on the code base. Aspects of various printer drivers are described in U.S. Pat. Nos. 5,687,301 and 5,580,177, the disclosures of which are incorporated by reference.
The invention arose out of concerns associated with providing improved printer driver architectures and methods of providing printer driver architectures.
Printer driver architectures and methods of providing adaptable printer driver architectures are described.
In one embodiment, a printer driver architecture includes a kernel that is configured to implement printer driver functionalities. At least one interface is provided into the kernel that is configured to permit addition and incorporation of at least one operation-specific functionality which is not specifically provided by the kernel""s printer driver functionalities.
In another embodiment, a kernel is defined and configured to implement printer driver functionalities. A plurality of interfaces are defined in the kernel and are configured to permit addition and incorporation of various operation-specific functionalities which are not specifically provided by the kernel""s printer driver functionalities. At least one operation-specific functionality is interfaced through at least one of the defined interfaces in the kernel to provide a printer driver functionality that the kernel would not otherwise have.
In yet another embodiment, an abstract base class is defined and pertains to at least one operation-specific functionality of a printer driver. The abstract base class is used to define an abstract interface. This interface is defined for a hierarchy of classes pertaining to at least one operation-specific functionality. The abstract base class may implement some part but not all of the interface it defines; at least one concrete class is derived from the abstract base class. The derived class implements all unimplemented portions of the interface.